home *** CD-ROM | disk | FTP | other *** search
/ Freelog 117 / FreelogNo117-OctobreNovembre2013.iso / Programmation / jedit / jedit5.1.0install.exe / {app} / modes / c.xml < prev    next >
Extensible Markup Language  |  2013-07-28  |  16KB  |  410 lines

  1. <?xml version="1.0"?>
  2.  
  3. <!DOCTYPE MODE SYSTEM "xmode.dtd">
  4.  
  5. <!-- This is based on ISO C++ Standard, 2003 and ISO C Standard, 1999.
  6.      The C++ keywords have been removed from this mode file, though. -->
  7. <MODE>
  8.     <PROPS>
  9.         <PROPERTY NAME="commentStart" VALUE="/*" />
  10.         <PROPERTY NAME="commentEnd" VALUE="*/" />
  11.         <PROPERTY NAME="lineComment" VALUE="//" />
  12.         <PROPERTY NAME="wordBreakChars" VALUE=",+-=<>/?^&*" />
  13.  
  14.         <!-- Auto indent -->
  15.         <PROPERTY NAME="indentOpenBrackets" VALUE="{" />
  16.         <PROPERTY NAME="indentCloseBrackets" VALUE="}" />
  17.         <PROPERTY NAME="unalignedOpenBrackets" VALUE="(" />
  18.         <PROPERTY NAME="unalignedCloseBrackets" VALUE=")" />
  19.         <PROPERTY NAME="indentNextLine"
  20.             VALUE="(?!^\s*(#|//)).*(\b(if|while|for)\s*\(.*\)|\b(else|do)\b)[^{;]*$" />
  21.         <PROPERTY NAME="unindentThisLine"
  22.             VALUE="^\s*((case\b.*|[\p{Alpha}_][\p{Alnum}_]*)\s*:(?!:)).*$" />
  23.         <PROPERTY NAME="electricKeys" VALUE=":" />
  24.     </PROPS>
  25.  
  26.     <RULES
  27.         IGNORE_CASE="FALSE"
  28.         HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
  29.         <EOL_SPAN TYPE="KEYWORD2" AT_WHITESPACE_END="TRUE" DELEGATE="CPP">#</EOL_SPAN>
  30.  
  31.         <IMPORT DELEGATE="LEX"/>
  32.         <IMPORT DELEGATE="CORE"/>
  33.     </RULES>
  34.  
  35.     <RULES SET="LEX" IGNORE_CASE="FALSE">
  36.         <IMPORT DELEGATE="COMMENTS" />
  37.         <IMPORT DELEGATE="C_LEXER" />
  38.     </RULES>
  39.  
  40.     <!-- Comments, Trigraph, Alternate-Tokens -->
  41.     <RULES SET="C_LEXER"
  42.         IGNORE_CASE="FALSE"
  43.         HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
  44.  
  45.         <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE" ESCAPE="\">
  46.             <BEGIN>L"</BEGIN>
  47.             <END>"</END>
  48.         </SPAN>
  49.         <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE" ESCAPE="\">
  50.             <BEGIN>"</BEGIN>
  51.             <END>"</END>
  52.         </SPAN>
  53.         <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE" ESCAPE="\">
  54.             <BEGIN>L'</BEGIN>
  55.             <END>'</END>
  56.         </SPAN>
  57.         <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE" ESCAPE="\">
  58.             <BEGIN>'</BEGIN>
  59.             <END>'</END>
  60.         </SPAN>
  61.  
  62.         <!-- Trigraphs -->
  63.         <SEQ TYPE="LITERAL4">??(</SEQ>
  64.         <SEQ TYPE="LITERAL4">??/</SEQ>
  65.         <SEQ TYPE="LITERAL4">??)</SEQ>
  66.         <SEQ TYPE="LITERAL4">??'</SEQ>
  67.         <SEQ TYPE="LITERAL4">??<</SEQ>
  68.         <SEQ TYPE="LITERAL4">??!</SEQ>
  69.         <SEQ TYPE="LITERAL4">??></SEQ>
  70.         <SEQ TYPE="LITERAL4">??-</SEQ>
  71.         <SEQ TYPE="LITERAL4">??=</SEQ>
  72.  
  73.         <!-- Alternate tokens -->
  74.         <SEQ TYPE="LITERAL4"><:</SEQ>
  75.         <SEQ TYPE="LITERAL4">:></SEQ>
  76.         <SEQ TYPE="LITERAL4"><%</SEQ>
  77.         <SEQ TYPE="LITERAL4">%></SEQ>
  78.         <SEQ TYPE="LITERAL4">%:</SEQ>
  79.  
  80.         <!-- Labels.
  81.             This is a part of core language syntax, but must be here
  82.             because it can't work after SEQ for ':'. -->
  83.         <MARK_PREVIOUS AT_WHITESPACE_END="TRUE"
  84.             MATCH_TYPE="OPERATOR"
  85.             TYPE="LABEL">:</MARK_PREVIOUS>
  86.  
  87.         <!-- Function-like macro or function calls.
  88.             This can't work after SEQ for '('. -->
  89.         <MARK_PREVIOUS
  90.             TYPE="FUNCTION"
  91.             MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>
  92.  
  93.         <SEQ TYPE="OPERATOR">=</SEQ>
  94.         <SEQ TYPE="OPERATOR">!</SEQ>
  95.         <SEQ TYPE="OPERATOR">+</SEQ>
  96.         <SEQ TYPE="OPERATOR">-</SEQ>
  97.         <SEQ TYPE="OPERATOR">/</SEQ>
  98.         <SEQ TYPE="OPERATOR">*</SEQ>
  99.         <SEQ TYPE="OPERATOR">></SEQ>
  100.         <SEQ TYPE="OPERATOR"><</SEQ>
  101.         <SEQ TYPE="OPERATOR">%</SEQ>
  102.         <SEQ TYPE="OPERATOR">&</SEQ>
  103.         <SEQ TYPE="OPERATOR">|</SEQ>
  104.         <SEQ TYPE="OPERATOR">^</SEQ>
  105.         <SEQ TYPE="OPERATOR">~</SEQ>
  106.         <SEQ TYPE="OPERATOR">?</SEQ>
  107.         <SEQ TYPE="OPERATOR">:</SEQ>
  108.         <SEQ TYPE="OPERATOR">.</SEQ>
  109.         <SEQ TYPE="OPERATOR">,</SEQ>
  110.         <SEQ TYPE="OPERATOR">[</SEQ>
  111.         <SEQ TYPE="OPERATOR">]</SEQ>
  112.         <SEQ TYPE="OPERATOR">)</SEQ>
  113.         <SEQ TYPE="OPERATOR">}</SEQ>
  114.         <SEQ TYPE="OPERATOR">{</SEQ>
  115.         <SEQ TYPE="OPERATOR">;</SEQ>
  116.  
  117.         <KEYWORDS>
  118.             <!-- Predefined macro names from ISO C++ Standard 2003 -->
  119.             <LITERAL2>__DATE__</LITERAL2>
  120.             <LITERAL2>__FILE__</LITERAL2>
  121.             <LITERAL2>__LINE__</LITERAL2>
  122.             <LITERAL2>__STDC_HOSTED__</LITERAL2>
  123.             <LITERAL2>__STDC_ISO_10646__</LITERAL2>
  124.             <LITERAL2>__STDC_VERSION__</LITERAL2>
  125.             <LITERAL2>__STDC__</LITERAL2>
  126.             <LITERAL2>__TIME__</LITERAL2>
  127.             <LITERAL2>__cplusplus</LITERAL2>
  128.             <!-- Standard library macro names from ISO C++ Standard 2003 -->
  129.             <!-- Hilight these to indicate accidental use of them
  130.                 in user source. They may be valid, but should cause
  131.                 future conflicts. -->
  132.             <LITERAL2>BUFSIZ</LITERAL2>
  133.             <LITERAL2>CLOCKS_PER_SEC</LITERAL2>
  134.             <LITERAL2>EDOM</LITERAL2>
  135.             <LITERAL2>EILSEQ</LITERAL2>
  136.             <LITERAL2>EOF</LITERAL2>
  137.             <LITERAL2>ERANGE</LITERAL2>
  138.             <LITERAL2>EXIT_FAILURE</LITERAL2>
  139.             <LITERAL2>EXIT_SUCCESS</LITERAL2>
  140.             <LITERAL2>FILENAME_MAX</LITERAL2>
  141.             <LITERAL2>FOPEN_MAX</LITERAL2>
  142.             <LITERAL2>HUGE_VAL</LITERAL2>
  143.             <LITERAL2>LC_ALL</LITERAL2>
  144.             <LITERAL2>LC_COLLATE</LITERAL2>
  145.             <LITERAL2>LC_CTYPE</LITERAL2>
  146.             <LITERAL2>LC_MONETARY</LITERAL2>
  147.             <LITERAL2>LC_NUMERIC</LITERAL2>
  148.             <LITERAL2>LC_TIME</LITERAL2>
  149.             <LITERAL2>L_tmpnam</LITERAL2>
  150.             <LITERAL2>MB_CUR_MAX</LITERAL2>
  151.             <LITERAL2>NULL</LITERAL2>
  152.             <LITERAL2>RAND_MAX</LITERAL2>
  153.             <LITERAL2>SEEK_CUR</LITERAL2>
  154.             <LITERAL2>SEEK_END</LITERAL2>
  155.             <LITERAL2>SEEK_SET</LITERAL2>
  156.             <LITERAL2>SIGABRT</LITERAL2>
  157.             <LITERAL2>SIGFPE</LITERAL2>
  158.             <LITERAL2>SIGILL</LITERAL2>
  159.             <LITERAL2>SIGINT</LITERAL2>
  160.             <LITERAL2>SIGSEGV</LITERAL2>
  161.             <LITERAL2>SIGTERM</LITERAL2>
  162.             <LITERAL2>SIG_DFL</LITERAL2>
  163.             <LITERAL2>SIG_ERR</LITERAL2>
  164.             <LITERAL2>SIG_IGN</LITERAL2>
  165.             <LITERAL2>TMP_MAX</LITERAL2>
  166.             <LITERAL2>WCHAR_MAX</LITERAL2>
  167.             <LITERAL2>WCHAR_MIN</LITERAL2>
  168.             <LITERAL2>WEOF</LITERAL2>
  169.             <LITERAL2>_IOFBF</LITERAL2>
  170.             <LITERAL2>_IOLBF</LITERAL2>
  171.             <LITERAL2>_IONBF</LITERAL2>
  172.             <LITERAL2>assert</LITERAL2>
  173.             <LITERAL2>errno</LITERAL2>
  174.             <LITERAL2>offsetof</LITERAL2>
  175.             <LITERAL2>setjmp</LITERAL2>
  176.             <LITERAL2>stderr</LITERAL2>
  177.             <LITERAL2>stdin</LITERAL2>
  178.             <LITERAL2>stdout</LITERAL2>
  179.             <LITERAL2>va_arg</LITERAL2>
  180.             <LITERAL2>va_end</LITERAL2>
  181.             <LITERAL2>va_start</LITERAL2>
  182.             <!-- Standard C library values from ISO C++ Standard 2003 -->
  183.             <!-- These are not explicitly defined as macro. But they like
  184.                 to be due to compatibility with C library implementation.
  185.                 So, treat them like standard library macro names. -->
  186.             <LITERAL2>CHAR_BIT</LITERAL2>
  187.             <LITERAL2>CHAR_MAX</LITERAL2>
  188.             <LITERAL2>CHAR_MIN</LITERAL2>
  189.             <LITERAL2>DBL_DIG</LITERAL2>
  190.             <LITERAL2>DBL_EPSILON</LITERAL2>
  191.             <LITERAL2>DBL_MANT_DIG</LITERAL2>
  192.             <LITERAL2>DBL_MAX</LITERAL2>
  193.             <LITERAL2>DBL_MAX_10_EXP</LITERAL2>
  194.             <LITERAL2>DBL_MAX_EXP</LITERAL2>
  195.             <LITERAL2>DBL_MIN</LITERAL2>
  196.             <LITERAL2>DBL_MIN_10_EXP</LITERAL2>
  197.             <LITERAL2>DBL_MIN_EXP</LITERAL2>
  198.             <LITERAL2>FLT_DIG</LITERAL2>
  199.             <LITERAL2>FLT_EPSILON</LITERAL2>
  200.             <LITERAL2>FLT_MANT_DIG</LITERAL2>
  201.             <LITERAL2>FLT_MAX</LITERAL2>
  202.             <LITERAL2>FLT_MAX_10_EXP</LITERAL2>
  203.             <LITERAL2>FLT_MAX_EXP</LITERAL2>
  204.             <LITERAL2>FLT_MIN</LITERAL2>
  205.             <LITERAL2>FLT_MIN_10_EXP</LITERAL2>
  206.             <LITERAL2>FLT_MIN_EXP</LITERAL2>
  207.             <LITERAL2>FLT_RADIX</LITERAL2>
  208.             <LITERAL2>FLT_ROUNDS</LITERAL2>
  209.             <LITERAL2>INT_MAX</LITERAL2>
  210.             <LITERAL2>INT_MIN</LITERAL2>
  211.             <LITERAL2>LDBL_DIG</LITERAL2>
  212.             <LITERAL2>LDBL_EPSILON</LITERAL2>
  213.             <LITERAL2>LDBL_MANT_DIG</LITERAL2>
  214.             <LITERAL2>LDBL_MAX</LITERAL2>
  215.             <LITERAL2>LDBL_MAX_10_EXP</LITERAL2>
  216.             <LITERAL2>LDBL_MAX_EXP</LITERAL2>
  217.             <LITERAL2>LDBL_MIN</LITERAL2>
  218.             <LITERAL2>LDBL_MIN_10_EXP</LITERAL2>
  219.             <LITERAL2>LDBL_MIN_EXP</LITERAL2>
  220.             <LITERAL2>LONG_MAX</LITERAL2>
  221.             <LITERAL2>LONG_MIN</LITERAL2>
  222.             <LITERAL2>MB_LEN_MAX</LITERAL2>
  223.             <LITERAL2>SCHAR_MAX</LITERAL2>
  224.             <LITERAL2>SCHAR_MIN</LITERAL2>
  225.             <LITERAL2>SHRT_MAX</LITERAL2>
  226.             <LITERAL2>SHRT_MIN</LITERAL2>
  227.             <LITERAL2>UCHAR_MAX</LITERAL2>
  228.             <LITERAL2>UINT_MAX</LITERAL2>
  229.             <LITERAL2>ULONG_MAX</LITERAL2>
  230.             <LITERAL2>USRT_MAX</LITERAL2>
  231.             <!-- Alternative representations of some operators
  232.                 from ISO C++ Standard 2003 -->
  233.             <!-- These are separated from CORE because they are
  234.                 available in the constant expressions after
  235.                 #if and #elif preprocessor directives. -->
  236.             <KEYWORD3>and</KEYWORD3>
  237.             <KEYWORD3>and_eq</KEYWORD3>
  238.             <KEYWORD3>bitand</KEYWORD3>
  239.             <KEYWORD3>bitor</KEYWORD3>
  240.             <KEYWORD3>compl</KEYWORD3>
  241.             <KEYWORD3>not</KEYWORD3>
  242.             <KEYWORD3>not_eq</KEYWORD3>
  243.             <KEYWORD3>or</KEYWORD3>
  244.             <KEYWORD3>or_eq</KEYWORD3>
  245.             <KEYWORD3>xor</KEYWORD3>
  246.             <KEYWORD3>xor_eq</KEYWORD3>
  247.         </KEYWORDS>
  248.     </RULES>
  249.  
  250.     <!-- Core language -->
  251.     <RULES SET="CORE"
  252.         IGNORE_CASE="FALSE"
  253.         HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
  254.         <KEYWORDS>
  255.             <!-- Types -->
  256.             <KEYWORD3>bool</KEYWORD3>
  257.             <KEYWORD3>char</KEYWORD3>
  258.             <KEYWORD3>double</KEYWORD3>
  259.             <KEYWORD3>enum</KEYWORD3>
  260.             <KEYWORD3>float</KEYWORD3>
  261.             <KEYWORD3>int</KEYWORD3>
  262.             <KEYWORD3>long</KEYWORD3>
  263.             <KEYWORD3>short</KEYWORD3>
  264.             <KEYWORD3>signed</KEYWORD3>
  265.             <KEYWORD3>struct</KEYWORD3>
  266.             <KEYWORD3>union</KEYWORD3>
  267.             <KEYWORD3>unsigned</KEYWORD3>
  268.             <!-- Keywords from ISO C++ Standard 2003 -->
  269.             <KEYWORD2>asm</KEYWORD2>
  270.             <KEYWORD1>auto</KEYWORD1>
  271.             <KEYWORD1>break</KEYWORD1>
  272.             <KEYWORD1>case</KEYWORD1>
  273.             <KEYWORD1>const</KEYWORD1>
  274.             <KEYWORD1>continue</KEYWORD1>
  275.             <KEYWORD1>default</KEYWORD1>
  276.             <KEYWORD1>do</KEYWORD1>
  277.             <KEYWORD1>else</KEYWORD1>
  278.             <KEYWORD2>extern</KEYWORD2>
  279.             <LITERAL2>false</LITERAL2>
  280.             <KEYWORD1>for</KEYWORD1>
  281.             <KEYWORD1>goto</KEYWORD1>
  282.             <KEYWORD1>if</KEYWORD1>
  283.             <KEYWORD1>inline</KEYWORD1>
  284.             <KEYWORD1>register</KEYWORD1>
  285.             <KEYWORD1>return</KEYWORD1>
  286.             <KEYWORD1>sizeof</KEYWORD1>
  287.             <KEYWORD1>static</KEYWORD1>
  288.             <KEYWORD1>switch</KEYWORD1>
  289.             <LITERAL2>true</LITERAL2>
  290.             <KEYWORD3>typedef</KEYWORD3>
  291.             <KEYWORD1>void</KEYWORD1>
  292.             <KEYWORD1>volatile</KEYWORD1>
  293.             <KEYWORD1>while</KEYWORD1>
  294.             <!-- Additional keywords from ISO C Standard(C99) -->
  295.             <KEYWORD3>restrict</KEYWORD3>
  296.             <KEYWORD3>_Bool</KEYWORD3>
  297.             <KEYWORD3>_Complex</KEYWORD3>
  298.             <KEYWORD3>_Pragma</KEYWORD3>
  299.             <KEYWORD3>_Imaginary</KEYWORD3>
  300.         </KEYWORDS>
  301.     </RULES>
  302.  
  303.     <!-- Different comment styles. -->
  304.     <RULES SET="COMMENTS">
  305.         <!-- Doxygen comment, Javadoc style -->
  306.         <SEQ TYPE="COMMENT1">/**/</SEQ>
  307.         <SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">
  308.             <BEGIN>/**<</BEGIN>
  309.             <END>*/</END>
  310.         </SPAN>
  311.         <SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">
  312.             <BEGIN>/**</BEGIN>
  313.             <END>*/</END>
  314.         </SPAN>
  315.         <EOL_SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">///<</EOL_SPAN>
  316.         <EOL_SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">///</EOL_SPAN>
  317.  
  318.         <!-- Doxygen comment, Qt style -->
  319.         <SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">
  320.             <BEGIN>/*!<</BEGIN>
  321.             <END>*/</END>
  322.         </SPAN>
  323.         <SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">
  324.             <BEGIN>/*!</BEGIN>
  325.             <END>*/</END>
  326.         </SPAN>
  327.         <EOL_SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">//!<</EOL_SPAN>
  328.         <EOL_SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">//!</EOL_SPAN>
  329.  
  330.         <!-- C style comment -->
  331.         <SPAN TYPE="COMMENT1">
  332.             <BEGIN>/*</BEGIN>
  333.             <END>*/</END>
  334.         </SPAN>
  335.         <EOL_SPAN TYPE="COMMENT1">//</EOL_SPAN>
  336.     </RULES>
  337.  
  338.     <!-- Preprocessor specific rules -->
  339.     <RULES SET="CPP"
  340.         IGNORE_CASE="FALSE"
  341.         HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
  342.  
  343.         <EOL_SPAN_REGEXP HASH_CHAR="include" TYPE="MARKUP" DELEGATE="INCLUDE">include\b</EOL_SPAN_REGEXP>
  344.         <EOL_SPAN_REGEXP HASH_CHAR="define" TYPE="MARKUP" DELEGATE="DEFINE">define\b</EOL_SPAN_REGEXP>
  345.         <EOL_SPAN_REGEXP HASH_CHAR="endif" TYPE="MARKUP" DELEGATE="LEX">endif\b</EOL_SPAN_REGEXP>
  346.         <EOL_SPAN_REGEXP HASH_CHAR="elif" TYPE="MARKUP" DELEGATE="CONDITION">elif\b</EOL_SPAN_REGEXP>
  347.         <EOL_SPAN_REGEXP HASH_CHAR="if" TYPE="MARKUP" DELEGATE="CONDITION">if\b</EOL_SPAN_REGEXP>
  348.  
  349.         <IMPORT DELEGATE="LEX"/>
  350.  
  351.         <!-- Directives -->
  352.         <KEYWORDS>
  353.             <MARKUP>ifdef</MARKUP>
  354.             <MARKUP>ifndef</MARKUP>
  355.             <MARKUP>else</MARKUP>
  356.             <MARKUP>error</MARKUP>
  357.             <MARKUP>line</MARKUP>
  358.             <MARKUP>pragma</MARKUP>
  359.             <MARKUP>undef</MARKUP>
  360.             <MARKUP>warning</MARKUP>
  361.         </KEYWORDS>
  362.     </RULES>
  363.  
  364.     <!-- After #include directive -->
  365.     <!-- "\"s are not escaped. -->
  366.     <RULES SET="INCLUDE"
  367.         IGNORE_CASE="FALSE"
  368.         HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
  369.         <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
  370.             <BEGIN><</BEGIN>
  371.             <END>></END>
  372.         </SPAN>
  373.         <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
  374.             <BEGIN>"</BEGIN>
  375.             <END>"</END>
  376.         </SPAN>
  377.         <IMPORT DELEGATE="LEX"/>
  378.     </RULES>
  379.  
  380.     <!-- After #define directive -->
  381.     <!-- Almost same as the normal code,
  382.         except two additional operators # and ##. -->
  383.     <RULES SET="DEFINE"
  384.         IGNORE_CASE="FALSE"
  385.         HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
  386.         <SEQ TYPE="OPERATOR">#</SEQ>
  387.         <IMPORT DELEGATE="LEX"/>
  388.         <IMPORT DELEGATE="CORE"/>
  389.     </RULES>
  390.  
  391.     <!-- After #if or #elif directive -->
  392.     <!-- All constant expressions and a special operator
  393.         'defined' is available. But the core language elements
  394.         (such as operator 'sizeof', type casting, etc...) are not. -->
  395.     <RULES SET="CONDITION"
  396.         IGNORE_CASE="FALSE"
  397.         HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
  398.         <IMPORT DELEGATE="LEX"/>
  399.         <KEYWORDS>
  400.             <KEYWORD2>defined</KEYWORD2>
  401.             <!-- Both true and false are specially permitted by
  402.                 ISO C++ Standard 2003 16.1p4 -->
  403.             <KEYWORD2>true</KEYWORD2>
  404.             <KEYWORD2>false</KEYWORD2>
  405.         </KEYWORDS>
  406.     </RULES>
  407.  
  408. </MODE>
  409.  
  410.